package model.tokens;

import java.util.LinkedList;
import java.util.Stack;
import java.util.Queue;

import model.parser.Parser;
import model.semantics.Node;

/**
 * Represents a token created from symbols in an expression string.
 */
public abstract class Token<T> {
	private String myLabel;

	public Token(String label) {
		myLabel = label;
	}

	/**
	 * Process the Shunting-Yard algorithm for the token.
	 * @param operatorStack the algorithm's operator stack.
	 * @param myParser TODO
	 * @param outputQueue the output queue for the algorithm.
	 */
	public abstract void process(Stack<Token<T>> operatorStack, Stack<Node<T>> output, Parser myParser);

	
	/**
	 * Gets the label for the token.
	 * @return the label of the token as a string.
	 */
	protected String getLabel() {
		return myLabel;
	}

	@Override
	public String toString() {
		return myLabel;
	}
}
